package component;

import component.factorybean.ProductFactoryBean;
import entity.javabean.Product;
import org.springframework.beans.factory.FactoryBean;

/**
 * @author: ZhouBert
 * @date: 2020/8/24
 * @description:
 */
public class ProductFactory {

	// 1. 实例工厂
	public Product getObject1() {
		return new Product();
	}

	// 2. 静态工厂
	public static Product getObject2() {
		return new Product();
	}

	// 3.1 带参的工厂方法
	public Product getObject3(String username, String password) {
		return new Product();
	}

	// 3.2 带泛型的工厂方法，但返回值类型和泛型无关
	public <T, K, V> Product getObject4(T t, String username) {
		return new Product();
	}

//	public Product getObject41(String t, String username){
//		return new Product();
//	}

	// 3.3 带泛型的工厂方法，但返回值类型由参数决定
	public <T, K, V> T getObject5(T t) {
		return t;
	}

	// 4.1 静态工厂方法返回类型为 FactoryBean
	public static FactoryBean<Product> getObject6() {
		return new ProductFactoryBean();
	}

	// 4.2 实例工厂方法返回类型为 FactoryBean
	public FactoryBean<Product> getObject7() {
		return new ProductFactoryBean();
	}
}
